pmount udev automount установка фона в XDM
Создано: 30-11-2009 16:51:53 изменено: 13-02-2010 09:36:17  Метки: cyrillic
по мотивам http://forum.ubuntu.ru/index.php?topic=23987.0

Задрали меня неприятные и плохо отслеживаемые глюки в xneur(надо бы им в багтрекер накатать - да взглянув на их заспамленый trac я никак не собрался), в частности после перехода на openbox отваливаться начали клавиатурные комбинации в thunderbird, и решил я доработать слегка скрипт по вышеприведенному адресу и повесить клавиатурные сокращения для перекодировки неправильно набранного слова и строки, в итоге получилось вот что:

Поскольку осилить питон мне видимо не по силам, переписал перекодировщик под себя на тикле, хотя можно было бы наверное и на шелле запинать.

Использован короткий сишник для определения включенной раскладки:
http://sanych.nnov.ru/files/skb.tar.gz
Откомпилированная версия:
http://sanych.nnov.ru/files/skb
Таблицы перекодировки и сама программа скорее всего будут допиливаться по ходу пьессы.
код:

#! /usr/bin/tclsh
# зависимости: tcl, xautomation, xsel, самосборный определитель раскладки skb
# вызов: 
# konv.tcl [word] - выделение и перекодирование слова
# konv.tcl line   - выделение и перекодирование строки
# konv.tcl select - выделение и перекодирование выделенного

proc err l {puts stderr $l}

# определитель раскладки
set skb [exec /home/sanych/bin/skb -1]

# таблицы для ремапа
set ruen {
й q ц w у e к r е t н y г u ш i щ o з p х [ ъ ] ф a ы s в d а f п g р h о j л k д l ж ; э ' я z ч x с c м v и b т n ь m б , ю . . /
Й Q Ц W У E К R Е T Н Y Г U Ш I Щ O З P Х \{ Ъ \} Ф A Ы S В D А F П G Р H О J Л K Д L Ж : Э \" Я Z Ч X С C М V И B Т N Ь M Б < Ю > , ?
}
#"
set enru {
q й w ц e у r к t е y н u г i ш o щ p з [ х ] ъ a ф s ы d в f а g п h р j о k л l д ; ж ' э z я x ч c с v м b и n т m ь , б . ю / .
Q Й W Ц E У R К T Е Y Н U Г I Ш O Щ P З \{ Х \} Ъ A Ф S Ы D В F А G П H Р J О K Л L Д : Ж \" Э Z Я X Ч C С V М B И N Т M Ь < Б > Ю ? ,
& ?}
#"
switch -exact -- $argv {
    line {
        # копируем до начала строки в буфер обмена
        exec xte "keydown Shift_L" "key Home" "keyup Shift_L"
    }
    select {
        # копируем выделенноe
    }
    default {
        # копируем слово в буфер обмена
        exec xte "keydown Control_L" "keydown Shift_L" "key Left" "keyup Shift_L" "keyup Control_L"
    }
}
# из буфера в переменную
set buf [exec xsel -p -o -t 100]
# перекодируем в зависимости от раскладки
if {$skb eq "USA"} {
    set buf [string map $enru $buf]
} else {
    set buf [string map $ruen $buf]
}
# скидываем обратно в буфер
exec << $buf xsel -i -b
#exec xte "key Delete" "mouseclick 2"
# удаляем, вставляем из буфера и перекидываем раскладку
exec xte "keydown Shift_L" "key Insert" "keyup Shift_L"
# очищаем буфер, включаем скинутый xsel-ом нумлок
#exec xsel -c -p
if {$skb eq "USA"} {
#  exec setxkbmap -layout ru,us
}

кусок конфига openbox для кнопок:

    <keybind key="F12">
      <action name="Execute">
        <command>/home/sanych/bin/konv.tcl line</command>
      </action>
    </keybind>
    <keybind key="F11">
      <action name="Execute">
        <command>/home/sanych/bin/konv.tcl</command>
      </action>
    </keybind>
    <keybind key="Pause">
      <action name="Execute">
        <command>/home/sanych/bin/konv.tcl select</command>
      </action>
    </keybind>

ну и напоследок пакет: http://sanych.nnov.ru/files/corlay-0.1.deb немного подправленный, в частности добавлен конфиг и помощь при вызове без параметров

2112 просмотров комментировать
Создано: sanych 06-02-2010 19:11:07 Ответить
как выяснилось в ubuntu 10.04alpha есть причудливый баг: xte из xautomation 1.03 сбрасывает раскладку клавиатуры на дефолтовую и не переключает ее по {CapsLock}. Так что данный пакет там скорее всего будет неработоспособен, если конечно не произойдет самопроизвольного восстановления п...атости.
А xsel перестал сбрасывать numlock :).

pmount udev automount установка фона в XDM